Unityでインカメラを使ってストリーミング動画をアレする


概要

お前はなぜそれをUnityで シリーズ。

やる。



WebCamTexture

これ使えばいけそう。

https://docs.unity3d.com/ScriptReference/WebCamTexture-devices.html



ドキュメントに書いといてほしいんだけど、

Nativeのカメラから取得できるテクスチャ、無茶苦茶制約が強い。


具体的には、

・サイズ指定が効くわけではない、一番近いサイズが来る(なんでだよ)

・取得後にサイズ調整すると中身が消える(なんでだよ)

・Spriteにしてから取得しても中身が消える(いやだからなんでだよ)


なので、WebCamTexから取得 -> byte化 -> byteからテクスチャ生成 -> 変形 -> byte化 とかが使えるのでは。

-> いけた。


まとめ

WebCamTextureを使う場合、次のような手順を踏むといい感じにリサイズできる。


1.GetPixelsで通常のテクスチャに移動

2.このテクスチャをjpg byte[]に変換

3.jpeg byte[] からテクスチャを生成

4.3にリサイズ処理を施す

5.4をjpg byte[]に変換


ほんとなんでだよ。



まあ、ネイティブのUIImageとかが保持してるリソースのGetPixelsが、ポインタを移動してるだけなのでは?という気がしている。